package beans;

import java.util.*;
import java.sql.*;
import dbUtil.*;
import utils.*;
import iteradores.*;

/**
 * Clase que obtiene la lista completa de los permisos de un usuario en el sistema.
 * Según el resultado, se genera automáticamente el menú principal.
 * @author José Giménez, Gustavo Planás, Esteban Benítez
 */
public class MenuUsuario extends PgAbm implements Abm {
    int cant_filas;                

    // Result set de los datos
    private ResultSet rs_datos;
    
    private String idusuario;
    
    /**
     * Constructor de la clase MenuUsuario
     * @param userid ID del usuario que ha solicitado inicio de sesión en el sistema.
     */
    public MenuUsuario(String userid) {
        idusuario = userid;
    }
    
    /**
     * Obtiene todos los permisos que le corresponde al usuario que solicita inicio de sesión en el sistema.
     * @return Cantidad de filas obtenidas en la consulta a la BD
     * @throws java.lang.Exception
     */
    public int load_menu_usuario() throws Exception
    {
        con.setAutoCommit(false);
        //Llama a la función que retorna el ResultSet
        CallableStatement proc = con.prepareCall("{? = call traermenuxusuario ( ? ) }",
                ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
        
        proc.registerOutParameter(1, Types.OTHER);
        proc.setInt(2, Integer.parseInt(idusuario));
        
        proc.execute();
        
        rs_datos = (ResultSet) proc.getObject(1);
        
        cant_filas = 0;        
        if (rs_datos.last()) 
        {          
            cant_filas = rs_datos.getRow();
            rs_datos.beforeFirst();        
        }     
        System.out.println("Cantidad Filas: " + cant_filas);
        return cant_filas;
    }
    
    /**
     * Obtiene el iterador de la clase MenuUsuario
     * @return Iterador de la clase MenuUsuario
     * @throws java.lang.Exception
     */
    public Iterador getIterator() throws Exception
    {
        IteradorMenuUsuario iter = new IteradorMenuUsuario(rs_datos);    
        return iter;  
    }
}